package com.docmgmt.mvp.service;

import com.docmgmt.mvp.dto.FileVersionVO;
import com.docmgmt.mvp.entity.FileVersionEntity;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 文件版本表（v3.0新增version_type支持3种版本类型） 服务类
 * </p>
 *
 * @author Dora
 */
public interface FileVersionService extends IService<FileVersionEntity> {

    /**
     * 获取文件的所有版本
     *
     * @param fileId 文件ID
     * @param userId 用户ID（用于权限检查）
     * @return 版本列表
     */
    List<FileVersionVO> listFileVersions(Long fileId, Long userId);

    /**
     * 恢复文件到指定版本
     *
     * @param fileId  文件ID
     * @param version 版本号
     * @param userId  用户ID（用于权限检查）
     * @param comment 恢复说明
     * @return 恢复后的文件版本VO
     */
    FileVersionVO restoreVersion(Long fileId, Integer version, Long userId, String comment);

    /**
     * 创建文件版本（在文件更新时调用）
     *
     * @param fileId      文件ID
     * @param storageKey  存储路径
     * @param size        文件大小
     * @param md5         MD5值
     * @param editorId    编辑者ID
     * @param versionType 版本类型
     * @param comment     版本说明
     * @return 创建的版本
     */
    FileVersionEntity createVersion(Long fileId, String storageKey, Long size, String md5,
                                    Long editorId, String versionType, String comment);
}
